Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.07.2017, 23:26
Аспирант
Отправить личное сообщение для desperate_one Посмотреть профиль Найти все сообщения от desperate_one
 
Регистрация: 21.04.2017
Сообщений: 43

Ajax форма не отправляется
В общем есть рабочая форма, которая отправляет заказ посетителя:
<div class="container">
<div id="postCart">

<div class="col-xs-24 col-md-18 col-lg-18 cart-form-order">

  <form class="form-horizontal" role="form" name="formCart" id="formCart" action="javascript:void(0);" method="POST" onSubmit="postCart(); return false;">

    <input name="lng" type="hidden" value="<?php echo $GLOBALS['cb_language_cur']; ?>">
    <input name="workPOST" type="hidden" value="onPostCart">

    <div class="form-group">
      <label for="name" class="col-md-6 control-label">Ваше имя</label>
      <div class="col-md-18">
        <input class="form-control name" type="text" maxlength="100" name="name" value="<?php echo $RQuser['name']; ?>" required>
      </div>
    </div>

    <div class="form-group">
      <label for="email" class="col-md-6 control-label" style="color:#999">E-Mail</label>
      <div class="col-md-18">
        <input class="form-control email" type="text" maxlength="200" name="email" value="" placeholder="Укажите e-mail, если желаете получить на него копию заказа">
      </div>
    </div>

    <div class="form-group">
      <label for="phone" class="col-md-6 control-label">Телефон</label>
      <div class="col-md-18">
        <input class="form-control phone" type="text" maxlength="100" name="phone" value="<?php echo $RQuser['phone']; ?>" required>
      </div>
    </div>

    <div class="form-group">
      <label for="delivery" class="col-md-6 control-label">Доставка</label>
      <div class="col-md-18">
              <select class="form-control" id="delivery" name="delivery" onChange="getOrderCheck()">
                <?php
                  $QQd = 'SELECT id, heading, price FROM delivery WHERE view = 1 ORDER BY sort';
                  $LQd = mysql_query($QQd);
                   while($RQd = mysql_fetch_assoc($LQd))
                   {
                      echo '<option value="'.$RQd['id'].'">'.$RQd['heading'].'</option>';
                   }
                ?>
              </select>
      </div>
    </div>

    <div class="form-group">
      <label for="message" class="col-md-6 control-label">Дополнительная информация</label>
      <div class="col-md-18">
        <textarea class="form-control message" wrap="virtual" name="message" placeholder="Если необходимо, то укажите дополнительную информацию по заказу"></textarea>
      </div>
    </div>

    <div class="form-group">
      <div class="col-md-offset-6 col-md-18">
         <div id="order-info-text">Пожалуйста, ещё раз проверьте ваш заказ и введенные данные, после нажатия кнопки "Отправить заказ" дальнейшие изменения будут недоступны</div>
      </div>
    </div>

    <div class="form-group">
      <div class="col-md-offset-6 col-md-18">
          <button type="button" id="cart-button-back" class="gray button" onClick="location.href='/cart';"><span class="hidden-xs">Вернуться </span>в корзину</button>
          <img class="ajaxSubmit" style="display:none; float:right;" src="/template/assets/ajax.gif">
          <button name="ordergo" type="submit" form="formCart" id="cart-button-order" class="green button butSubmit">Отправить <span class="hidden-xs">заказ</span></button>
      </div>
    </div>

  </form>
</div>

<div class="col-xs-24 col-md-6 col-lg-6">
<h3>Ваш чек:</h3>
  <div id="order-check" style="display:none;">

    <table id="order-check-table">
      <tr><td>Заказ на сумму</td><td id="order-check-price">0</td></tr>
      <tr><td>Ваша скидка</td><td id="order-check-promo">0</td></tr>
      <tr><td>Сумма с учетом скидки</td><td id="order-check-pay">0</td></tr>
      <tr><td>Доставка</td><td id="order-check-delivery">0</td></tr>
      <tr><td colspan="2"><hr></td></tr>
      <tr id="order-check-total-tr"><td>Итого, <?php echo $ccur; ?></td><td id="order-check-total">0</td></tr>
    </table>
  </div>
  <img id="order-check-ajax" src="/template/assets/ajax.gif" alt="" />
  <div class="info-tovar-cart col-sm-24"><?php echo $_cb_tmpl_block['tovar']['val'][3]; ?></div>
</div>

</div>

с таким обработчиком:
function postCart()
  {
   $("#formCart .butSubmit").hide();
   $("#formCart .ajaxSubmit").show();
   $.post("/ajax/cart.php", $("#formCart").serialize(), cart_post_update);
  }

  function cart_post_update(data)
  {
   $("#formCart .butSubmit").show();
   $("#formCart .ajaxSubmit").hide();

  if(data == "") var count_error = 0;
   else { var error = data.split("|"); var count_error = error.length; }

      if(count_error > 0)
      {
         $("#formCart .error").removeClass("error");
         for (var i = 0; i < count_error; i++) {  $("#formCart ."+error[i]).addClass("error");  }

         // var Time = new Date();
         // $("#formCart .captcha-input").val("");
         // $("#formCart .captcha-img").attr("src","/core/i?rnd="+Time.getTime());
      }
      else
      {
        <?php
            $QQ = 'SELECT text_full AS value FROM settings_'.CloudBusiness::sqldata($GLOBALS['lang_code']).' WHERE id = 1450 ORDER BY id LIMIT 1';
            $LQ = mysql_query ($QQ);
            $RQ = mysql_fetch_assoc($LQ);

            $RQ['value'] = str_replace("\n", "", str_replace("\r\n", "", $RQ['value']));
        ?>
        $("#formCart").html("<?php echo addslashes($RQ['value']); ?>");
      }
  }


Новая задача, отправлять данные с другой формы, её я уже подстроил под обработчик:
<div class="container">
			    <div id="postCart" class="col-xs-12 col-sm-12 col-md-3 col-lg-3">
				    <div class="order cart-form-order">
				        <p class="name">Заказать столик</p>
				        <form role="form" name="formCart" id="formCart" action="javascript:void(0);" method="POST" onSubmit="postCart(); return false;">
                            <input name="lng" type="hidden" value="<?php echo $GLOBALS['cb_language_cur']; ?>">
                            <input name="workPOST" type="hidden" value="onPostCart">
                            <input name="delivery" type="hidden" value="2">
					        <p>Ваше имя:</p>
					        <input name="name" type="text" placeholder="Введите ваше Имя">
					        <p>Контактный телефон:</p>
					        <input name="phone" type="text" placeholder="+7 (978) 568 15 26" id="phone">
					        <p>E-mail:</p>
					        <input name="email" type="text" placeholder="Введите ваш E-mail">
					        <p>Количество персон:</p>
					        <input name="message" type="text" placeholder="3">
                            <img class="ajaxSubmit" style="display:none; float:right;" src="/template/assets/ajax.gif">
				            <button id="cart-button-order" type="submit" form="formCart" class="but gr butSubmit">Забронировать<span class="hidden-xs"> </span></button>
					    </form>
				    </div>
			    </div>


Но при нажатии на "забронировать" срабатывает лишь ajax.gif, сразу исчезает и ничего не происходит, в БД данные не записываются, консоль не на что не ругается, где оплошность?
Ответить с цитированием
  #2 (permalink)  
Старый 02.07.2017, 00:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,149

desperate_one,
плохая практика называть одинакого
Сообщение от desperate_one
div id="postCart"
Сообщение от desperate_one
function postCart()
Ответить с цитированием
  #3 (permalink)  
Старый 02.07.2017, 01:02
Аспирант
Отправить личное сообщение для desperate_one Посмотреть профиль Найти все сообщения от desperate_one
 
Регистрация: 21.04.2017
Сообщений: 43

Сообщение от рони Посмотреть сообщение
desperate_one,
плохая практика называть одинакого
, спасибо, учту в дальнейшем. Но в данном случае это ничего не решает. Даже заменил ид для точности.
Ответить с цитированием
  #4 (permalink)  
Старый 02.07.2017, 01:24
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

У вас 2 разных формы, надеюсь они не на одной странице? Ведь у них одинаковый id.
Ответить с цитированием
  #5 (permalink)  
Старый 02.07.2017, 05:51
Аспирант
Отправить личное сообщение для desperate_one Посмотреть профиль Найти все сообщения от desperate_one
 
Регистрация: 21.04.2017
Сообщений: 43

Сообщение от Malleys Посмотреть сообщение
У вас 2 разных формы, надеюсь они не на одной странице? Ведь у них одинаковый id.
Нет, не на одной странице. Форма отправки заказа находится на странице заказа, форма брони столика на главной странице.
Ответить с цитированием
  #6 (permalink)  
Старый 03.07.2017, 05:07
Аспирант
Отправить личное сообщение для desperate_one Посмотреть профиль Найти все сообщения от desperate_one
 
Регистрация: 21.04.2017
Сообщений: 43

в общем никто тут не сможет помочь как я понял
Ответить с цитированием
  #7 (permalink)  
Старый 03.07.2017, 05:35
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Данные на сервере есть от этого запроса? Поскольку ваша форма отправляет данные, я проверил... вопрос в том принимает ли их сервер... и если принимает, то как обрабатывает.

Последний раз редактировалось Malleys, 03.07.2017 в 05:38.
Ответить с цитированием
  #8 (permalink)  
Старый 03.07.2017, 07:05
Аспирант
Отправить личное сообщение для desperate_one Посмотреть профиль Найти все сообщения от desperate_one
 
Регистрация: 21.04.2017
Сообщений: 43

Сообщение от Rise Посмотреть сообщение
Пипец запросы, а ты способен код отформатировать красиво, нет, тогда копайся в своем мусоре сам.
В том то и дело что этот самописный движок не мной писан)
Ответить с цитированием
  #9 (permalink)  
Старый 03.07.2017, 07:07
Аспирант
Отправить личное сообщение для desperate_one Посмотреть профиль Найти все сообщения от desperate_one
 
Регистрация: 21.04.2017
Сообщений: 43

Сообщение от Malleys Посмотреть сообщение
Данные на сервере есть от этого запроса? Поскольку ваша форма отправляет данные, я проверил... вопрос в том принимает ли их сервер... и если принимает, то как обрабатывает.
Да, в этом и оказалась причина, и проблема была в том что php-обработчик был настроен на работу только с формой со страницы оформления заказа, где стартовалась сессия, а на главной нет, вот и не записывались данные, хоть и отправлялись.
Ответить с цитированием
  #10 (permalink)  
Старый 03.07.2017, 07:11
Аспирант
Отправить личное сообщение для desperate_one Посмотреть профиль Найти все сообщения от desperate_one
 
Регистрация: 21.04.2017
Сообщений: 43

я переписал php-обработчик:
<?php
$GLOBALS['key_includes'] = true;

include("../config/config_bd.php");
include("../config/config.php");

if(isset($_POST['ordergo'])) {

$get_all_orders = mysql_query("SELECT * FROM orders",$db);
$gao_amount = mysql_num_rows($get_all_orders);
$new_order_numb = $gao_amount + 1 ;
$order_heading = $_POST['name'];
$order_email = $_POST['email'];
$order_phone = $_POST['phone'];
$order_msg = $_POST['message'];

$cart_info = '

<table id="setMessageTable">
<tr>
<td><span>№</span></td>
<td>'.$new_order_numb.'</td>
</tr>
<tr>
<td><span>имя</span></td>
<td>'.$order_heading.'</td>
</tr>
<tr>
<td><span>телефон</span></td>
<td>'.$order_phone.'</td>
</tr>
<tr>
<td><span>email</span></td>
<td>'.$order_email.'</td>
</tr>
<tr>
<td><span>персон</span></td>
<td>'.$order_msg.'</td>
</tr>
</table><br>
';
$saveneworder = mysql_query("INSERT INTO orders
(heading,cart_info,email,phone,ok) VALUES
('$order_heading','$cart_info','$order_email','$or der_phone','0')
",$db);

}

?>
Но с ajax-формы запись в БД не происходит, а если создать отдельную страницу и с простой формой (без ajax), то всё работает как надо.
Хоть и в ajax-форме срабатывает функция
function cart_post_update(data)
которая отвечает что заказ отправлен и принят
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не отправляется форма с помощью AJAX Event164 AJAX и COMET 1 13.04.2016 14:28
Не передается форма в выводе результатов через ajax tot18 AJAX и COMET 4 06.03.2014 16:15
Не отправляется форма в ie7/8 bayrach jQuery 8 26.09.2012 14:14
Форма обратной связи на AJAX проблемы с модальным окном pavel87 AJAX и COMET 0 26.05.2011 14:30
AJAX запрос отправляется на denwer, а на сервер не отправляется hoid AJAX и COMET 1 19.09.2009 15:37